package leetbook.topInterviewQuestionsEasy;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

/**
 * 给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ，返回 true ；如果数组中每个元素互不相同，返回 false 。
 * @author 胡宇轩
 * @Email: yuxuan.hu01@bianlifeng.com
 */
public class Four {
    /**
     * 方法一  借助一个set 来判断是否有重复
     * */
    class Solution {
        public boolean containsDuplicate(int[] nums) {
            Set<Integer> sets = new HashSet<>();
            for (int n : nums){
                if(sets.contains(n)){
                    return true;
                }
                sets.add(n);
            }
            return false;
        }
    }

    /**
     * 方法二： 对数组进行排序，排序后相同的元素肯定是挨着的。
     * */
    class Solution1 {
        public boolean containsDuplicate(int[] nums) {
            Arrays.sort(nums);
            for (int i = 1; i < nums.length; i++) {
                if(nums[i] == nums[i-1]){
                    return true;
                }
            }
            return false;
        }
    }
}
